/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: Lenovo
 * Date: 2025-03-23
 * Time: 22:14
 */
// 抽象图形类：定义图形通用属性和行为规范
abstract class Shape {
    protected String color;  // 公共属性：颜色（子类可继承）

    // 抽象类构造方法：初始化颜色
    public Shape(String color) {
        this.color = color;
    }
    // 抽象方法1：绘制图形（必须由子类实现）
    public abstract void draw();

    // 抽象方法2：计算面积（必须由子类实现）
    public abstract double calculateArea();

    // 具体方法：获取颜色描述（子类可直接使用）
    public String getColorInfo() {
        return color;
    }
}

// 矩形子类实现
class Rectangle extends Shape {
    private double width;
    private double height;

    // 子类构造方法必须调用父类构造方法
    public Rectangle(String color, double width, double height) {
        super(color);  // 通过super初始化父类color属性
        this.width = width;
        this.height = height;
    }

    @Override
    public void draw() {
        System.out.println("矩形！！！");
    }

    @Override
    public double calculateArea() {
        return width * height;  // 矩形面积计算公式
    }
}

// 圆形子类实现
class Circle extends Shape {
    private double radius;

    public Circle(String color, double radius) {
        super(color);
        this.radius = radius;
    }

    @Override
    public void draw() {
        System.out.println(color + "圆形!!!");
    }

    @Override
    public double calculateArea() {
        return Math.PI * radius * radius;  // 圆形面积计算公式
    }
}
